home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
A-COMAL Series
/
(k)aao.d64
/
hamurabi.lst
< prev
next >
Wrap
File List
|
2009-01-24
|
7KB
|
235 lines
0010 // DELETE "HAMMURABI"
0020 // SAVE "HAMMURABI"
0030 // BY MARK SKOPINSKY
0040 //
0050 INIT
0060 FOR YEAR:=1 TO 10 DO
0070 BEGGING'STEWARD
0080 REPORT'UPDATE
0090 BUY'LAND
0100 IF BUY=0 THEN SELL'LAND
0110 FEED'PEOPLE
0120 PLANT'CROPS
0130 DO'RATS'ATTACK
0140 POP'INCREASE
0150 PLAGUE'CHANCE
0160 ENDFOR YEAR
0170 FINAL'REPORT
0180 END'GAME
0190 //
0200 PROC INIT
0210 PCNT'DEAD:=0; POP'PCNT:=0
0220 POP:=95; GRAIN:=3; ACRES:=1000
0230 HARVEST:=3000; RAT'FOOD:=200
0240 STORED:=HARVEST-RAT'FOOD
0250 SETTLERS:=5; NUM'DEAD:=0
0260 ENDPROC INIT
0270 //
0280 PROC BEGGING'STEWARD
0290 FOR X:=1 TO 25 DO PRINT // CLEAR SCREEN
0300 PRINT "╚AMMURABI, YOUR HUMBLE STEWARD BEGS TO"
0310 PRINT "REPORT THAT IN ┘EAR";
0320 PRINT YEAR;"OF YOUR REIGN:"
0330 PRINT
0340 IF NUM'DEAD=0 THEN
0350 PRINT "╬ONE OF YOUR LOYAL SUBJECTS PERISHED,"
0360 ELSE
0370 PRINT NUM'DEAD;
0380 PRINT "OF YOUR LOYAL SUBJECTS PERISHED,"
0390 ENDIF
0400 PRINT "AND";SETTLERS;"NEWCOMERS SETTLED IN THE CITY."
0410 PRINT
0420 POP:+SETTLERS
0430 ENDPROC BEGGING'STEWARD
0440 //
0450 PROC REPORT'UPDATE
0460 PRINT "┘OUR SUBJECTS NOW NUMBER";POP,"."
0470 PRINT
0480 PRINT "╘HE CITY OWNS";ACRES;"ACRES OF LAND."
0490 PRINT "╘HE HARVEST YIELDED";HARVEST;"BUSHELS,"
0500 PRINT USING "OR #.# BUSHELS HARVESTED PER ACRE": HARVEST/ACRES
0510 IF RAT'FOOD=0 THEN
0520 PRINT "╥ODENTS ATE NONE OF THE GRAIN."
0530 ELSE
0540 PRINT "╥ODENTS ATE";RAT'FOOD;"BUSHELS OF GRAIN."
0550 ENDIF
0560 PRINT "╘HE GRANARIES NOW HOLD";STORED;"BUSHELS."
0570 PRINT
0580 PRICE:=RND(17,26)
0590 PRINT "╠AND IS TRADING AT";PRICE;"BUSHELS PER ACRE."
0600 ENDPROC REPORT'UPDATE
0610 //
0620 PROC BUY'LAND
0630 REPEAT
0640 INPUT "╚OW MANY ACRES DO YOU DESIRE? ": BUY
0650 IF PRICE*BUY>STORED THEN WRONG'GRAIN
0660 UNTIL BUY*PRICE<=STORED
0670 ACRES:+BUY; STORED:-GRAIN*BUY
0680 ENDPROC BUY'LAND
0690 //
0700 PROC SELL'LAND
0710 REPEAT
0720 INPUT "╚OW MANY ACRES SHOULD ╔ SELL? ": SELL
0730 IF SELL>ACRES THEN WRONG'ACRES
0740 UNTIL SELL<=ACRES
0750 ACRES:-SELL; STORED:+PRICE*SELL
0760 ENDPROC SELL'LAND
0770 //
0780 PROC FEED'PEOPLE
0790 REPEAT
0800 PRINT
0810 PRINT "╚OW MANY BUSHELS OF GRAIN DO"
0820 INPUT "YOU WISH TO FEED YOUR PEOPLE? ": FOOD
0830 IF FOOD=0 THEN STEWARD'QUITS
0840 IF FOOD>STORED THEN
0850 WRONG'GRAIN
0860 ENDIF
0870 UNTIL FOOD<=STORED
0880 STORED:-FOOD
0890 ENDPROC FEED'PEOPLE
0900 //
0910 PROC PLANT'CROPS
0920 REPEAT
0930 OK:=FALSE
0940 PRINT
0950 PRINT "╚OW MANY ACRES OF LAND DO"
0960 INPUT "YOU WISH TO PLANT WITH GRAIN? ": PLANT
0970 PRINT
0980 IF PLANT>ACRES THEN
0990 WRONG'ACRES
1000 ELIF PLANT/2>STORED THEN
1010 WRONG'GRAIN
1020 ELIF PLANT>10*POP THEN
1030 PRINT "┬UT YOU HAVE ONLY";POP;"SUBJECTS"
1040 PRINT "TO TEND THE FIELDS! ╬OW THEN,"
1050 ELSE
1060 OK:=TRUE
1070 ENDIF
1080 UNTIL OK
1090 STORED:-(PLANT DIV 2)
1100 ENDPROC PLANT'CROPS
1110 //
1120 PROC DO'RATS'ATTACK
1130 PRODUCTION:=RND(1,6)
1140 RAT'FOOD:=0
1150 IF RND(1,100)>50 THEN
1160 RAT'FOOD:=STORED DIV RND(1,6)
1170 ENDIF
1180 HARVEST:=STORED+PLANT*PRODUCTION
1190 STORED:=HARVEST-RAT'FOOD
1200 ENDPROC DO'RATS'ATTACK
1210 //
1220 PROC POP'INCREASE
1230 NUM'DEAD:=0
1240 SETTLERS:=INT(RND(1,6)*(20*ACRES+STORED)/POP/100+1)
1250 MEALS:=FOOD DIV POP
1260 ENDPROC POP'INCREASE
1270 //
1280 PROC PLAGUE
1290 NUM'DEAD:=POP DIV 2
1300 POP:-NUM'DEAD
1310 PRINT "┴ HORRIBLE PLAGUE STRUCK! ╚ALF OF THE"
1320 PRINT "PEOPLE DIED."
1330 ENDPROC PLAGUE
1340 //
1350 PROC PLAGUE'CHANCE
1360 IF MEALS<20 THEN
1370 IF RND(1,100)<PCNT'DEAD THEN
1380 PLAGUE
1390 ELSE
1400 STARVE'THE'POPULATION
1410 ENDIF
1420 ENDIF
1430 ENDPROC PLAGUE'CHANCE
1440 //
1450 PROC STARVE'THE'POPULATION
1460 NUM'DEAD:=POP-INT(POP*(MEALS/20))
1470 IF NUM'DEAD>.45*POP THEN STARVED
1480 POP'PCNT:=((YEAR-1)*POP'PCNT+NUM'DEAD*100/POP)/YEAR
1490 POP:-NUM'DEAD
1500 PCNT'DEAD:+NUM'DEAD
1510 ENDPROC STARVE'THE'POPULATION
1520 //
1530 PROC STARVED
1540 PRINT
1550 PRINT "┘OU STARVED";NUM'DEAD;"PEOPLE IN ONE YEAR!!"
1560 MISMANAGEMENT
1570 ENDPROC STARVED
1580 //
1590 PROC MISMANAGEMENT
1600 PRINT "─UE TO THIS EXTREME MISMANAGEMENT YOU"
1610 PRINT "HAVE NOT ONLY BEEN IMPEACHED AND"
1620 PRINT "THROWN OUT OF OFFICE, BUT YOU HAVE"
1630 PRINT "ALSO BEEN DECLARED ╬ATIONAL ╞INK!!!"
1640 END'GAME
1650 ENDPROC MISMANAGEMENT
1660 //
1670 PROC WRONG'GRAIN
1680 PRINT
1690 PRINT "╚AMMURABI, THINK AGAIN. ┘OU HAVE ONLY"
1700 PRINT STORED;"BUSHELS OF GRAIN. ╬OW THEN,"
1710 ENDPROC WRONG'GRAIN
1720 //
1730 PROC WRONG'ACRES
1740 PRINT
1750 PRINT "╚AMMURABI, THINK AGAIN. ┘OU ONLY OWN"
1760 PRINT ACRES;"ACRES. ╬OW THEN,"
1770 ENDPROC WRONG'ACRES
1780 //
1790 PROC STEWARD'QUITS
1800 PRINT
1810 PRINT "╚AMMURABI, ╔ CANNOT DO WHAT YOU WISH."
1820 PRINT "╟ET YOURSELF ANOTHER STEWARD!!!!!!"
1830 END'GAME
1840 ENDPROC STEWARD'QUITS
1850 //
1860 PROC FINAL'REPORT
1870 PRINT "╔N YOUR 10-YEAR TERM OF OFFICE,";INT(POP'PCNT),"%"
1880 PRINT "OF THE POPULATION STARVED PER YEAR,"
1890 PRINT "ON THE AVERAGE, ╔.┼. A TOTAL OF";INT(PCNT'DEAD)
1900 PRINT "PEOPLE DIED!!"
1910 LAND:=ACRES/POP
1920 PRINT "┘OU STARTED WITH 10 ACRES PER PERSON"
1930 PRINT "AND ENDED WITH";LAND;"PER PERSON."
1940 PRINT
1950 FOR T:=1 TO 5000 DO NULL
1960 IF POP'PCNT>33 OR LAND<7 THEN
1970 MISMANAGEMENT
1980 ELIF POP'PCNT>10 OR LAND<9 THEN
1990 NERO'AND'IVAN
2000 ELIF POP'PCNT>3 OR LAND<10 THEN
2010 FAIR
2020 ELSE
2030 VERY'GOOD
2040 ENDIF
2050 ENDPROC FINAL'REPORT
2060 //
2070 PROC VERY'GOOD
2080 PRINT "┴ FANTASTIC PERFORMANCE! ├HARLEMAGNE,"
2090 PRINT "─ISRAELI, AND ╩EFFERSON COMBINED COULD"
2100 PRINT "NOT HAVE DONE BETTER!"
2110 ENDPROC VERY'GOOD
2120 //
2130 PROC NERO'AND'IVAN
2140 PRINT "┘OUR HEAVY-HANDED PERFORMANCE SMACKS OF"
2150 PRINT "╬ERO AND ╔VAN THE ╘ERRIBLE. ╘HE PEOPLE"
2160 PRINT "(REMAINING) FIND YOU AN UNPLEASANT"
2170 PRINT "RULER, AND, FRANKLY, HATE YOUR GUTS!!"
2180 ENDPROC NERO'AND'IVAN
2190 //
2200 PROC FAIR
2210 PRINT "┘OUR PERFORMANCE COULD HAVE BEEN SOME-"
2220 PRINT "BETTER, BUT REALLY WASN'T TOO BAD."
2230 PRINT RND(1,POP*.8);
2240 PRINT "PEOPLE WOULD DEARLY LIKE TO SEE YOU"
2250 PRINT "ASSASSINATED, BUT WE ALL HAVE OUR"
2260 PRINT "TRIVIAL LITTLE PROBLEMS."
2270 ENDPROC FAIR
2280 //
2290 PROC END'GAME
2300 PRINT
2310 PRINT "╙O LONG FOR NOW."
2320 PRINT
2330 END // OF THE GAME
2340 ENDPROC END'GAME